<template>
    <view class="footer-view" :style="{ height: listHeight + 'rpx' }">
        <eui-card title="基本信息" showTitleLine="true" h-padding="20" type="upDownSingle">
            <template v-slot:content>
                <view class="m-main-top">
                    <eui-text :value="mainData.c_store_id" :name="getRelatedName('rdsStores', mainData.c_store_id)"
                        type="titlename" title="退货机构" occupy />
                    <eui-text :value="mainData.c_wno" :name="getRelatedName('rdsWnos', mainData.c_wno)" type="titlename"
                        title="退货仓库" />
                    <eui-text :value="mainData.c_adno" :name="getRelatedName('rdsDeparts', mainData.c_adno)"
                        type="titlename" title="部门" />
                    <eui-text :value="getDictName('退货权限', mainData.c_ret_priv)" type="name" title="退货权限" />
                    <eui-text :value="getDictName('退货性质', mainData.c_ret_kind)" title="退货性质" type="name" />
                    <eui-text :value="mainData.c_provider" title="供应商" type="titlename"
                        :name="getRelatedName('rdsProviders', mainData.c_provider)" occupy />
                    <eui-text :value="mainData.c_con_no" title="合同号" type="name" />
                    <eui-text :value="getDictName('经营方式', mainData.c_con_type)" type="name" title="经营方式" />
                    <!-- <eui-text :value="getDictName('结算方式', mainData.c_pay_type)" type="name" title="结算方式" /> -->
                    <eui-text :value="getDictName('物流模式', mainData.c_d_type)" title="物流模式" type="name" />
                    <eui-text :value="mainData.c_cancel_dt" type="date" title="截止日期" />
                    <!-- <eui-text :value="getUserDictName('退货原因', mainData.c_reason)" title="退货原因" type="name" /> -->
                    <eui-text :value="mainData.c_mk_userno" :name="getRelatedName('rdsUsers', mainData.c_mk_userno)"
                        type="titlename" title="录入" />
                    <eui-text :value="mainData.c_mk_dt" type="rdstime" />
                </view>
            </template>
        </eui-card>
        <view class="paging-view">
            <eui-paging ref="paging" v-model="listManager" :fixed="false" :refresher-enabled="false"
                :default-page-size="20" :loading-more-enabled="true" :show-loading-more-when-reload="true">
                <view v-for="(item, index) in listManager" class="m-list-top">
                    <eui-text :value="item.c_gcode" type="titlename" :name='item.c_gname' :title="index + 1 + '.商品'"
                        occupy />
                    <eui-text :value="item.c_barcode" type="name" title="条码" />
                    <eui-text :value="getDictName('商品类型', item.c_type)" type="name" title="商品类型" />
                    <eui-text :value="item.c_adno" :name="getRelatedName('rdsDeparts', item.c_adno)" type="titlename"
                        title="部门" />
                    <eui-text :value="getRelatedName('rdsGdsclasses', item.c_ccode)" type="name" title="品类" />
                    <eui-text :value="item.c_bcode" :name="getRelatedName('rdsBrands', item.c_bcode)" type="titlename"
                        title="品牌" />
                    <eui-text :value="item.c_order_pack" :name="item.c_order_unit" type="slash" title="包装/单位" />
                    <eui-text v-if="sysConfig.inputType === '1'" :value="item.c_n_pack" type="price" title="件数" precision="0"/>
                    <eui-text v-if="sysConfig.inputType === '1'" :value="item.c_n_odd" type="price" title="零数" precision="3" />
                    <eui-text v-if="sysConfig.inputType === '2'" :value="item.c_n_input" type="price" title="包装数" precision="3" />
                    <eui-text :value="item.c_n" type="price" title="正品数量" precision="3" />
                    <eui-text :value="item.c_n_free" type="price" title="赠品数量" precision="3" />
                    <eui-text :value="item.c_tax_rate_pay" type="price" title="进项税率(%)" precision="0" />
                    <eui-text :value="item.c_tax_rate" type="price" title="销项税率(%)" precision="0" />
                    <eui-text :value="getDictName('坏货标志', item.c_is_bad)" type="name" title="坏货标志" />
                    <eui-text
                        :value="getDictName(sysConfig.costAccMethod === '1' ? '非全批次退货价格类型' : '全批次退货价格类型', item.c_pt_type)"
                        type="name" title="价格类型" />
                    <eui-text :value="getUserDictName('退货原因', item.c_reason) || item.c_reason" type="name"
                        title="退货原因" />
                </view>
            </eui-paging>
        </view>
        <!-- <scroll-view :scroll-top="0" scroll-y="true">
        <eui-list-template type="list" v-model="detailData" :title="false" templateTitle=""
            :isBottem="false" @onRefresh="billQuery" isImage>
            <template v-slot:list="item">
                <eui-text :value="item.c_gcode" type="titlename" :name='item.c_gname' title="商品" occupy />
                <eui-text :value="item.c_barcode" type="name" title="条码" />
                <eui-text :value="getDictName('商品类型', item.c_type)" type="name" title="商品类型" />
                <eui-text :value="item.c_adno" name="rdsDeparts" type="titlename" title="部门" />
                <eui-text :value="getRelatedName('rdsGdsclasses', item.c_ccode)" type="name" title="品类" />
                <eui-text :value="item.c_bcode" name="rdsDeparts" type="titlename" title="品牌" />
                <eui-text :value="item.c_order_pack" :name="item.c_order_unit" type="slash"
                    title="包装/单位" />
                <eui-text :value="item.c_n_pack" :name="item.c_n_odd" type="rdsslash" title="件数/零数" />
                <eui-text :value="item.c_n" type="price" title="正品数量" />
                <eui-text :value="item.c_n_free" type="price" title="赠品数量" />
                <eui-text :value="getDictName('坏货标志', item.c_is_bad)" type="name" title="坏货标志" />
                <eui-text :value="item.c_tax_rate_pay" type="name" title="进项税率(%)" />
                <eui-text :value="item.c_tax_rate" type="name" title="销项税率(%)" />
                <eui-text
                    :value="getDictName(sysConfig.costAccMethod === '1' ? '非全批次退货价格类型' : '全批次退货价格类型', item.c_d_type)"
                    type="name" title="退货价格类型" />
                <eui-text :value="item.c_pt_pay" type="price" title="结算价" />
                <eui-text :value="item.c_pet_pay" type="price" title="不含税结算价" />
                <eui-text :value="item.c_at_pay" type="price" title="结算额" />
                <eui-text :value="item.c_aet_pay" type="price" title="不含税结算额" />
                <eui-text :value="item.c_pt_in" type="price" title="进价" />
                <eui-text :value="item.c_at_in" type="price" title="进价额" />
                <eui-text :value="item.c_price" type="price" title="售价" />
                <eui-text :value="item.c_at_sale" type="price" title="售价额" />
                <eui-text :value="item.c_n_ret" type="price" title="退货数量" />
                <eui-text :value="item.c_at_pay_ret" type="price" title="退货结算额" />
                <eui-text :value="item.c_aet_pay_ret" type="price" title="退货不含税结算额" />
                <eui-text :value="item.c_at_cost_ret" type="price" title="退货成本额" />
                <eui-text :value="item.c_aet_cost_ret" type="price" title="退货不含税成本额" />
                <eui-text :value="item.c_at_sale_ret" type="price" title="退货售价额" />
                <eui-text :value="getUserDictName('退货原因', item.c_reason)" type="name" title="退货原因" />
            </template>
        </eui-list-template>
    </scroll-view> -->
    </view>
</template>

<script setup type="ts">
import service from '@/common/service';
import { getRelatedName, getUserDictName } from '../RdsViews/components/RelatedName.js';
import { getRdsUrl, rdsRequest } from '@/hooks/rdsServices';
import { onMounted, ref } from "vue";
import {getRdsSysConfig} from "@/hooks/init";

const rdsUrl = getRdsUrl();
const disabled = ref(true);
const mainData = ref({});
const listManager = ref([]);
const detailData = ref([]);
const paging = ref(null);
const sysConfig = ref({
    costAccMethod: '1',//成本价核算方法
    inputType: '1' // 1-件数零数分别录入方式 2-自动识别含量单值录入方式
});
const currentIndex = ref(0);
const rdsDict = ref([])
const props = defineProps({
    data: {
        type: Object
    },
    windowWidth: {
        type: Number,
        default: 0,
    }
});
const listHeight = ref(300);
onMounted(async () => {
    await getListHeight();
    service.enjoyShowLoading('正在加载...');
    await getAllDicData();
    await getSysConfig();
    if (props.data.BillId) {
        await billQuery(props.data.BillId);
    }
    service.enjoyHideLoading();
})

// 获取列表高度
const getListHeight = async () => {
    uni.getSystemInfo({
        success: function (res) { // res - 各种参数
            let info = uni.createSelectorQuery().select(".footer-view");
            info.boundingClientRect(function (data) { //data - 各种参数
                //获取列表高度
                let height = res.windowHeight - (data?.top  || 0);
                //转换rpx
                listHeight.value = height / (res.windowWidth / 750) - 100;
            }).exec()
        }
    });
};
// 获取字典数据
const getAllDicData = async () => {
    rdsDict.value = await service.getLocalStorage('rdsDict');
};
const getDictName = (key, value) => {
    const dictMap = rdsDict.value.find(x => x.c_class_name === key && x.c_id === value);
    return dictMap ? dictMap.c_name : '';
};

const getSysConfig = async () => {
  sysConfig.value.costAccMethod = await getRdsSysConfig("核算参数", "成本价核算方法") || '1';
  sysConfig.value.inputType = await getRdsSysConfig("供应链管理参数", "商品件数零数录入方式") || '1';
}

const confirm = async (t, v) => {
    switch (t) {
        case 'reset'://展开
            disabled.value = !disabled.value;
            currentIndex.value = v;
            await shouldShow({ itemIndex: v, currentIndex: currentIndex.value });
            break;
    }
};
// 获取单据详情信息
const billQuery = async (billId) => {
    if (!billId) {
        paging.value.setLocalPaging([]);
        return;
    }
    const result = await rdsRequest(rdsUrl.scApi, '商品退货通知单', 'EnjoyBillQuery', { BillId: billId, }, '531');
    if (result.ds.length > 0) {
        mainData.value = result.ds[0];
        detailData.value = result.ds1;
        paging.value.setLocalPaging(result.ds1);
    } else {
        paging.value.setLocalPaging([]);
    }
}
const shouldShow = async ({ itemIndex: itemIndex, currentIndex: currentIndex }) => {
    // 控制单元格的显示状态
    if (disabled.value && itemIndex == currentIndex) {
        return 'none';
    }
    return '';
}
</script>

<style lang="scss" scoped>
@import '@/static/font/enjoyicon/iconfont.css';
@import '@/main.scss';

.footer-view {
    display: flex;
    flex: 1;
    flex-direction: column;
}

.paging-view {
    display: flex;
    flex: 1;
    flex-direction: column;
    background: $uni-bg-color-inverse;
    border-radius: 20rpx;
    margin: 10rpx 20rpx;
    padding: 20rpx;
}


.m-main-top {
    width: 100%;
    display: grid;
    grid-template-columns: 51% 49%;
    font-size: 12px;
}

.m-list-top {
    width: 100%;
    display: grid;
    grid-template-columns: 51% 49%;
    border-bottom: 1px solid #c8c7cc;
    font-size: 12px;
}
</style>
